/**
 * API相关的工具函数
 */

/**
 * 过滤API请求参数，移除null、undefined和空字符串值
 * @param params 原始参数对象
 * @returns 过滤后的参数对象
 */
export function filterApiParams(params: Record<string, any>): Record<string, any> {
  return Object.fromEntries(
    Object.entries(params).filter(([_, value]) => {
      // 过滤掉null、undefined和空字符串
      return value !== null && value !== undefined && value !== ''
    })
  )
}

/**
 * 过滤表单数据，移除null和undefined值，但保留空字符串和0
 * @param formData 原始表单数据
 * @returns 过滤后的表单数据
 */
export function filterFormData(formData: Record<string, any>): Record<string, any> {
  return Object.fromEntries(
    Object.entries(formData).filter(([_, value]) => {
      // 只过滤掉null和undefined，保留空字符串、0、false等有效值
      return value !== null && value !== undefined
    })
  )
}

/**
 * 构建查询字符串
 * @param params 参数对象
 * @returns 查询字符串
 */
export function buildQueryString(params: Record<string, any>): string {
  const filteredParams = filterApiParams(params)
  const searchParams = new URLSearchParams()
  
  Object.entries(filteredParams).forEach(([key, value]) => {
    if (Array.isArray(value)) {
      value.forEach(item => searchParams.append(key, String(item)))
    } else {
      searchParams.append(key, String(value))
    }
  })
  
  return searchParams.toString()
}

/**
 * 处理API响应错误
 * @param error 错误对象
 * @param defaultMessage 默认错误消息
 * @returns 格式化的错误消息
 */
export function handleApiError(error: any, defaultMessage: string = '操作失败'): string {
  if (error?.response?.data?.message) {
    return error.response.data.message
  }
  
  if (error?.message) {
    return error.message
  }
  
  return defaultMessage
}
